package com.yuanzhi.train.tree;

/**
 * 给你一个二叉树的根节点 root ， 检查它是否轴对称。
 *
 * 示例 1： 输入：root = [1,2,2,3,4,4,3] 输出：true 示例 2：
 *
 * 输入：root = [1,2,2,null,3,null,3] 输出：false  
 *
 * 提示：
 *
 * 树中节点数目在范围 [1, 1000] 内 -100 <= Node.val <= 100  
 *
 * 来源：力扣（LeetCode） 链接：https://leetcode-cn.com/problems/symmetric-tree
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * 
 * @author yuanZhi
 * @since 2022/1/19 9:20
 */
public class IsSymmetric {
	public static void main(String[] args) {
		TreeNode root = new TreeNode(1, null,
				new TreeNode(2, new TreeNode(3), null));
		System.out.println(isSymmetric(root));
	}

	private static boolean isSymmetric(TreeNode root) {
		return check(root, root);
	}
	private static boolean check(TreeNode p, TreeNode q) {
		if (p == null && q == null) {
			return true;
		}
		if (p == null || q == null) {
			return false;
		}
		return p.val == q.val && check(p.left, q.right)
				&& check(p.right, q.left);
	}


}
